﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Carozos.BE;
using Carozos.BC;

namespace Carozos.Web
{
    public partial class frmPedido : System.Web.UI.Page
    {
        PedidoBC pbc = new PedidoBC();

        protected void Page_Load(object sender, EventArgs e)
        {
            //Sesión que nos permite reconocer de que formulario viene el llamado a la busqueda
            Session["codFrmProveedor"] = 2;
            Session["codFrmInsumo"] = 2;

            //Sesión que tiene datos del insumo.
            if (Session["proveedor"] != null)
            {
                ProveedorBE pro = Session["proveedor"] as ProveedorBE;
                if(pro.razonSocial==" ")
                    txtProveedor.Text = pro.nombre;
                if (pro.nombre == " ")
                    txtProveedor.Text = pro.razonSocial;

                if (Session["codPedido"] != null)
                {
                    txtCodPedido.Text = Session["codPedido"].ToString();
                    if(IsPostBack==false)
                        loadDetalles(Convert.ToInt32(Session["codPedido"]));
                }
            }

            if (Session["insumo"] != null)
            {
                InsumoBE ins = Session["insumo"] as InsumoBE;
                PedidoBE pe = new PedidoBE(Convert.ToInt32(Session["codPedido"]));
                DetallePedidoBE det = new DetallePedidoBE(pe, ins, 0, 0);
                pbc.addDetallePedido(det);
                loadDetalles(Convert.ToInt32(Session["codPedido"]));
                Session["insumo"] = null;
            }
        }

        public void loadDetalles(int pCodPedido)
        {
            List<DetallePedidoBE> lista = pbc.getDetallesByCodigoPedido(new PedidoBE(pCodPedido));
            gv.DataSource = lista;
            gv.DataBind();
            
            int i = 0;
            decimal sum = 0;
            foreach(GridViewRow r in gv.Rows)
            {
                (r.FindControl("txtCantidad") as TextBox).Text = lista[i].cantidad.ToString();
                (r.FindControl("txtPrecio") as TextBox).Text = lista[i].precioUnitario.ToString();
                sum = sum + lista[i].cantidad * lista[i].precioUnitario;
                i++;
            }
            lblTotal.Visible = true;
            lblTotal.Text = sum.ToString();
        }

        protected void btnGuarda_Click(object sender, ImageClickEventArgs e)
        {
            if (Session["proveedor"] != null)
            {
                ProveedorBE pro = Session["proveedor"] as ProveedorBE;
                PedidoBE pe = new PedidoBE(pro, DateTime.Now);
                txtCodPedido.Text = pbc.insertPedido(pe).ToString();
                Session["codPedido"] = txtCodPedido.Text;
            }
        }

        protected void btnDel_Click(object sender, ImageClickEventArgs e)
        {
            if (Convert.ToInt32(gv.SelectedValue) != 0)
            {
                pbc.deleteDetallePedido(new DetallePedidoBE(Convert.ToInt32(gv.SelectedValue)));
                loadDetalles(Convert.ToInt32(Session["codPedido"]));
            }
        }

        protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
        {
            PedidoBE pe =pbc.getPedidoByCodigo(Convert.ToInt32(txtCodPedido.Text)); 
            if(pe!=null)
            {
                txtCodPedido.Text = pe.codigo.ToString();
                if (pe.proveedor.nombre == " ")
                    txtProveedor.Text = pe.proveedor.razonSocial;
                else
                    txtProveedor.Text = pe.proveedor.nombre;
                Session["proveedor"] = pe.proveedor;
                Session["codPedido"] = pe.codigo;

                loadDetalles(Convert.ToInt32(Session["codPedido"]));
            }
        }

        protected void btnUpdate_Click(object sender, ImageClickEventArgs e)
        {   
            int i=0;
            foreach (GridViewRow r in gv.Rows)
            {
                DetallePedidoBE det = new DetallePedidoBE(Convert.ToInt32(gv.Rows[i].Cells[1].Text),
                null,null, Convert.ToInt32((r.FindControl("txtCantidad") as TextBox).Text),
                Convert.ToDecimal((r.FindControl("txtPrecio") as TextBox).Text));
                pbc.updateDetallePedido(det);
                i++;
            }
            loadDetalles(Convert.ToInt32(Session["codPedido"]));
        }
    }
}